﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using EvaluacionExalmarOledbHelper;
using EvaluacionExalmarEntidades;
using EvaluacionExalmarInterfaces;
using System.Configuration;
using System.Text;

namespace EvaluacionExalmarAccesoDatos
{
    public class Pregunta : IPregunta
    {
        #region IPregunta Members
        private readonly String _sCadenaConexion = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

        public IList<PreguntaInfo> Listar(PreguntaInfo oPregunta)
        {
            var query = new StringBuilder("Select Id_Pregunta, Id_Competencia, Competencia, Nro_Pregunta, Tema, Comportamiento, Etapa_Contribucion from ConsultaPreguntas ");

            if (oPregunta != null)
            {
                var where = new StringBuilder(" where ");
                if (oPregunta.IdCompetencia.HasValue)
                {
                    if (!where.ToString().Equals(" where "))
                        where.Append(" and ");
                    where.Append(" Id_Competencia = " + oPregunta.IdCompetencia);
                }
                if (oPregunta.EtapaContribucion.HasValue)
                {
                    if (!where.ToString().Equals(" where "))
                        where.Append(" and ");
                    where.Append(" Etapa_Contribucion = " + oPregunta.EtapaContribucion);                    
                }
                query.Append(@where);
            }

            var oListaPreguntas = new List<PreguntaInfo>();

            using (var drd = OleDbHelper.ExecuteReader(_sCadenaConexion, CommandType.Text, query.ToString()))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        while (drd.Read())
                        {
                            oListaPreguntas.Add(new PreguntaInfo(drd.GetInt32(0), 
                                drd.GetInt32(1), new CompetenciaInfo(drd.GetInt32(1), drd.GetString(2).Trim(), null), 
                                drd.GetInt32(3), drd.GetString(4).Trim(), drd.GetString(5), drd.GetInt32(6)));
                        }
                    }
                }
            }
            return oListaPreguntas;
        }

        public PreguntaInfo Consultar(PreguntaInfo oPregunta)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
